package com.xbongbong.saas.domain.dao;

import com.xbongbong.saas.domain.entity.SupplierContactUserEntity;
import com.xbongbong.saas.domain.entity.UserTeamEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author feng.zheng
 * @version v1.0
 * @date 2019/1/24 16:13
 * @since v1.0
 */

public interface SupplierContactUserDao {

    /**
     * 插入数据
     *
     * @param contactUser 联系人团队数据
     * @return 成功返回id
     * @author feng.zheng
     * @date 2019/1/23 20:00
     * @since v1.0
     **/
    Integer insert(SupplierContactUserEntity contactUser);

    /**
     * 更新数据
     *
     * @param contactUser 联系人团队数据
     * @return 成功返回id
     * @author feng.zheng
     * @date 2019/1/23 20:00
     * @since v1.0
     **/
    Integer update(SupplierContactUserEntity contactUser);

    /**
     * 根据主键删除
     *
     * @param key    主键
     * @param corpid 公司id
     * @return java.lang.Integer
     * @author feng.zheng
     * @date 2019/2/19 20:30
     */
    Integer deleteByKey(@Param("key") Long key, @Param("corpid") String corpid);

    /**
     * 根据主键获取
     *
     * @param key    主键
     * @param corpid 公司id
     * @return com.xbongbong.saas.domain.entity.SupplierContactUserEntity
     * @author feng.zheng
     * @date 2019/2/19 20:31
     */
    SupplierContactUserEntity getByKey(@Param("key") Long key, @Param("corpid") String corpid);

    /**
     * 根据参数获取集合
     *
     * @param param 参数
     * @return java.util.List<com.xbongbong.saas.domain.entity.SupplierContactUserEntity>
     * @author feng.zheng
     * @date 2019/2/19 20:31
     */
    List<SupplierContactUserEntity> findEntitys(@Param("param") Map<String, Object> param);

    /**
     * 根据参数获取集合数目
     *
     * @param param 参数
     * @return java.util.List<com.xbongbong.saas.domain.entity.SupplierContactUserEntity>
     * @author feng.zheng
     * @date 2019/2/19 20:31
     */
    Integer getEntitysCount(@Param("param") Map<String, Object> param);

    /**
     * 批量删除
     *
     * @param list   id集合
     * @param corpid 公司id
     * @return java.lang.Integer
     * @author feng.zheng
     * @date 2019/2/19 20:32
     */
    Integer deleteBatch(@Param("list") List<Long> list, @Param("corpid") String corpid,  @Param("del")Integer del);

    void batchDelete(String corpid, List<Long> dataIdList, List<String> userIdList);

    void disbandedTeam(@Param("corpid") String corpid, @Param("contactIdIn") List<Long> dataIdList);

    void disbandedTeamByCustomerId(@Param("corpid") String corpid, @Param("customerIdIn") List<Long> dataIdList);
    /**
     * 根据联系人id批量删除
     * @param contactIdIn 联系人id
     * @param corpid 公司id
     * @return
     */
    Integer deleteBatchByContactIdIn(@Param("contactIdIn") List<Long> contactIdIn, @Param("corpid") String corpid);

    Integer deleteByUserIdAndCustomerId(@Param("corpid") String corpid, @Param("customerId") Long customerId, @Param("userId") String userId);

    void insertBatch(List<SupplierContactUserEntity> supplierContactUserEntityList);

    List<UserTeamEntity> findBaseEntitys(@Param("param")Map<String,Object> map);

    /**
     * 批量修改
     *
     * @param corpid
     * @param dataIdIn
     * @param isMain
     * @param del
     */
    void batchUpdateByIdIn(@Param("corpid")String corpid, @Param("idIn")List<Long> dataIdIn, @Param("isMain")Integer isMain, @Param("del")Integer del);

    List<SupplierContactUserEntity> getBySupplierId(@Param("corpid") String corpid, @Param("supplierId") Long supplierId);

    void updateBatch(@Param("list") List<SupplierContactUserEntity> supplierContactUserEntities, @Param("corpid") String corpid);

    /**
     * 批量修改团队里面成员为协同人以及协同人可编辑权限
     *
     * @param corpid
     * @param idIn
     * @param isMain
     * @param formPermission
     */
    void batchUpdateCoAndPerByUserIdIn(@Param("corpid")String corpid, @Param("idIn")List<Long> idIn, @Param("isMain")Integer isMain, @Param("formPermission")Integer formPermission);

}
